package com.jian.channel;

import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

/**
 * @author Jiange
 * @create 2021-09-11-15:33
 */

/**
 * channel的分散(scatter)指的是 从channel里面读取数据方法多个buffer中，一个写满再写下一个  聚集(gather)指的是从多个buffer写入到同一个channel中
 */
public class FileChannelDemo1 {
    public static void main(String[] args) throws Exception {
        //获取channel的方法可以通过  输入流  输出流  或者是这个channel对象
        RandomAccessFile file = new RandomAccessFile("D:\\WEB\\NIO\\NIO.iml", "rw");
        FileChannel channel = file.getChannel();
        ByteBuffer allocate = ByteBuffer.allocate(1024);

        //返回的int结果表示有多少读到了buffer内  如果返回-1则表示已经到了最后
        int read = channel.read(allocate);
        while(read > 0){
            allocate.flip();
            while (allocate.hasRemaining()){
                System.out.print((char) allocate.get());
            }
            allocate.clear();
            read = channel.read(allocate);
        }
        file.close();
        System.out.println("结束了");
    }
}
